/**
 * 
 */
package br.gov.sjc.aluguelsocial;

import java.util.List;

import br.gov.sjc.classes.NumeroSias;
import br.gov.sjc.classes.TrabalhoOFR;
import br.gov.sjc.dao.TrabalhoOFRDAO;
import br.gov.sjc.utils.Sair;
import android.app.Activity;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;

/**
 * @author rodrigo.ramos
 * @tutorial http://escoladeandroid.blogspot.com.br/2012/02/android-criando-uma-agenda-de-contatos.html
 */
public class TrabalhoOFRActivity extends Sair {
	String TAG = "TrabalhoOFRActivity";
	private static final int INCLUIR = 0;
	private static final int ALTERAR = 1;
	TrabalhoOFR trabalhoofr;
	int lint;

	//Pega o numero do Sias em uso atual
	NumeroSias ns = new NumeroSias();
	int NumSias = ns.getNumeroDaFamilia();
	int idMembroSias = ns.getNumeroDoMembroDaFamilia();

	// Declara Buttons
	Button btnOFRVoltar, btnOFRIr, btnOFRNova, btnOFRSalvar;

	// Declara TextViews e LV
	EditText tbOFRRendaValor;
	ArrayAdapter<CharSequence> adpOFRRendaFonte;
	ArrayAdapter<CharSequence> adpComprovanteRenda;

	// Declara o Spinner
	Spinner spOFRRendaCompRenda, spOFRRendaFonte;


	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.outrasfontes);
		registerBaseActivityReceiver();
		try
		{

			final Bundle data = (Bundle) getIntent().getExtras();
			lint = data.getInt("tipo");
			Log.i(TAG.toString(), "data2.getInt = "+lint);
			if (lint == INCLUIR)
			{
				Log.i(TAG.toString(), "lint == INCLUIR ");
				//quando for incluir um contato criamos uma nova inst�ncia
				trabalhoofr = new TrabalhoOFR(); 
				Log.i(TAG.toString(), "trabalhoofr = new TrabalhoOFR(); ");
			}else{
				Log.i(TAG.toString(), "lint == ALTERAR ");
				//quando for alterar o contato carregamos a classe que veio por Bundle
				trabalhoofr = (TrabalhoOFR)data.getSerializable("trabalhoofr");
				Log.i(TAG.toString(), "trabalhoofr = (TrabalhoOFR)data.getSerializable('trabalhoofr'); ");
			}


			//Criação dos objetos da Activity
			tbOFRRendaValor = (EditText) findViewById(R.trabalho.tbOFRRendaValor);

			//lvOFROutraFont = (ListView) findViewById(R.trabalho.lvOFROutraFont);
			spOFRRendaCompRenda = (Spinner) findViewById(R.trabalho.spOFRRendaCompRenda);
			spOFRRendaFonte = (Spinner) findViewById(R.trabalho.spOFRRendaFonte); 

			// Spinner Defini��o
			adpComprovanteRenda = ArrayAdapter.createFromResource(
					this, R.array.ComprovanteRenda,
					android.R.layout.simple_spinner_item);
			adpComprovanteRenda.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
			spOFRRendaCompRenda.setAdapter(adpComprovanteRenda);

			// Spinner Defini��o
			adpOFRRendaFonte = ArrayAdapter.createFromResource(
					this, R.array.FonteRenda,
					android.R.layout.simple_spinner_item);
			adpOFRRendaFonte.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
			spOFRRendaFonte.setAdapter(adpOFRRendaFonte);

			//Carregando os objetos com os dados
			//caso seja uma inclusão ele vir� carregado com os atributos text
			//definido no arquivo main.xml
			//TODO: Falta get de SiasN e idMembro
			String SiasNstr = trabalhoofr.getSiasN();
			String idMembroStr = trabalhoofr.getIdMembro();
			tbOFRRendaValor.setText(trabalhoofr.getValor());
			spOFRRendaFonte.setSelection(adpOFRRendaFonte.getPosition(trabalhoofr.getFonte()));
			tbOFRRendaValor.setText(trabalhoofr.getValor());
			spOFRRendaCompRenda.setSelection(adpComprovanteRenda.getPosition(trabalhoofr.getComprovante()));

		}catch (Exception e) {
			Log.e(TAG,"onCreate - Erro : " + e.getMessage());
		} 

	}
	
	public boolean Validacao(){
		boolean retorno = false;
		String msg = "";
		int erro = 0;
		if (tbOFRRendaValor.getText().toString().equals("")){
			msg += "Todos os Campos são Obrigatórios";
			msg += "\n";
			erro++;
		}
		
			if (temEsteBeneficio(spOFRRendaFonte.getSelectedItem().toString())){
				msg += "O membro Já possui este beneficio";
				msg += "\n";
				erro++;
			}
		
		if (erro==0){
			retorno = true;
		}else{
			Toast.makeText(this, msg, Toast.LENGTH_LONG).show();
		}
		
		return retorno;
	}

	public void btnConfirmar_click(View view)
	{
		try
		{
			if (Validacao()){
				//Quando confirmar a inclusão ou altera��o deve-se devolver
				//o registro com os dados preenchidos na tela e informar
				//o RESULT_OK e em seguida finalizar a Activity

				Intent data = new Intent();
				trabalhoofr.setSiasN(String.valueOf(NumSias));
				trabalhoofr.setIdMembro(String.valueOf(idMembroSias));
				trabalhoofr.setFonte(String.valueOf(adpOFRRendaFonte.getItem(spOFRRendaFonte.getSelectedItemPosition())));
				trabalhoofr.setValor(tbOFRRendaValor.getText().toString());
				trabalhoofr.setComprovante(String.valueOf(adpComprovanteRenda.getItem(spOFRRendaCompRenda.getSelectedItemPosition())));
				data.putExtra("trabalhoofr", trabalhoofr);
				setResult(Activity.RESULT_OK, data);   
				finish();
			}
		}catch (Exception e) {
			Log.e(TAG,"btnConfirmar_click - Erro : " + e.getMessage());
		}
	}
	public void btnCancelar_click(View view)
	{
		try
		{
			//Quando for simplesmente cancelar a opera��o de inclusão
			//ou altera��o deve-se apenas informar o RESULT_CANCELED
			//e em seguida finalizar a Activity

			setResult(Activity.RESULT_CANCELED);
			finish();
		}catch (Exception e) {
			Log.e(TAG,"btnCancelar_click - Erro : " + e.getMessage());
		}             
	}

	public boolean temEsteBeneficio(String beneficio){
		boolean retorno = false;
		TrabalhoOFRDAO TOFRDAO = new TrabalhoOFRDAO(this);
		TOFRDAO.open();
		List<TrabalhoOFR> lista = TOFRDAO.Consultar(NumSias, idMembroSias);
		for(int i = 0; i < lista.size(); i ++){ 
			if (lint == INCLUIR){
				if(lista.get(i).getFonte().equals(beneficio)){ 
					retorno = true;
				}
			}else{
				if(lista.get(i).getFonte().equals(beneficio) && lista.get(i).get_id() != trabalhoofr.get_id()){ 
					retorno = true;
				}
			}
		}
		TOFRDAO.close();
		return retorno;
	}

	@Override
	protected void onResume() {
		//quando a Activity main receber o foco novamente abre-se novamente a conexão
		//openDB();
		//método responsável pela atualiza da lista de dados na tela
		//adapter.notifyDataSetChanged();
		super.onResume();
	}
	@Override
	protected void onPause() {

		//toda vez que o programa peder o foco fecha-se a conexão com o BD
		//closeDB();
		super.onPause();
	}
	@Override
	protected void onDestroy() {
		super.onDestroy();
		unRegisterBaseActivityReceiver();
		finish();
	}
}
